package com.project.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.bean.CheckCarBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author lyl
 * description:
 */
@Mapper
public interface ICheckCarDao extends BaseMapper<CheckCarBean> {

    /**
     * 检查此库存商品是否已经存在于订单，
     * 如果已经存在此订单则不进行重复添加商品
     * 仅仅需要调用更新数据的方法进行更新即可
     *
     * @param userId
     * @param productId
     * @param clientId
     * @return
     */
    CheckCarBean checkNumExist(@Param("userId") int userId, @Param("productId") int productId, @Param("clientId") int clientId);

    /**
     * 移除当前预订单中的某一商品
     *
     * @param checkCarId
     * @return
     */
    int removeCheckCar(@Param("checkCarId") int checkCarId);

    /**
     * 添加至预处理订单
     *
     * @param userId
     * @param productId
     * @param clientId
     * @return
     */
    int addCheckToCar(@Param("userId") int userId, @Param("productId") int productId, @Param("clientId") int clientId);

    /**
     * 查询用户下预出库订单集
     *
     * @param userId
     * @return
     */
    List<CheckCarBean> showCheckCarById(@Param("userId") int userId, @Param("clientId") int clientId);

    /**
     * 根据用户与商品id更新当前商品的出库数量
     *
     * @param userId
     * @param productId
     * @param checkNum
     * @return
     */
    int updateCheckCarInfo(@Param("userId") int userId, @Param("productId") int productId, @Param("checkNum") int checkNum);

    /**
     * 对该用户下的某客户订单出库
     *
     * @param userId
     * @param clientId
     * @return
     */
    int checkOut(@Param("userId") int userId, @Param("clientId") int clientId);
}
